using System;

namespace DeSleeper.Library.PowerManagement
{
	/// <summary>
	/// A flag that controls how to switch the power state.
	/// </summary>
	[Flags]
	public enum PowerActionFlags : uint
	{
		/// <summary>
		/// Broadcasts a PBT_APMQUERYSUSPEND event to each application to request
		/// permission to suspend operation.
		/// </summary>
		[Obsolete]
		QueryAllowed = 0x00000001,
		/// <summary>
		/// Applications can prompt the user for directions on how to prepare for
		/// suspension. Sets bit 0 in the Flags parameter passed in the lParam parameter of
		/// WM_POWERBROADCAST.
		/// </summary>
		UIAllowed = 0x00000002,
		/// <summary>
		/// Ignores applications that do not respond to the PBT_APMQUERYSUSPEND event
		/// broadcast in the WM_POWERBROADCAST message.
		/// </summary>
		[Obsolete]
		OverrideApplications = 0x00000004,
		/// <summary>
		/// Uses the first lightest available sleep state.
		/// </summary>
		LightestFirst = 0x10000000,
		/// <summary>
		/// Requires entry of the system password upon resume from one of the system
		/// standby states.
		/// </summary>
		LockConsole = 0x20000000,
		/// <summary>
		/// Disables all wake events.
		/// </summary>
		DisableWakes = 0x40000000,
		/// <summary>
		/// Forces a critical suspension.
		/// </summary>
		Critical = 0x80000000
	}
}